<?php namespace Admin\Model;
use Hdphp\Model\Model;

class Cate extends Model{
	// 固定写法，指定table的表名字,table名字就是要操作的那张表名
	protected $table = "category";
	// 以下为判断规则"protected $validate"为固定写法,后面跟的参数数组内写要被检测的内容,第二个参数为规则,第三个参数为提示语,第四五个参数一什么时候检测,参数解释可以在手册查看
	protected $validate = array(
		array('cname','required','分类名称不能为空',3,3),
		array('ctitle','required','分类标题不能为空',3,3),
		array('csort','num:0,65535','分类排序必须为数值且范围在0-65535之间',3,3),
		);
	// 以下方法的作用为添加数据库信息
	public function addData(){
		// $this->add()之前必须向$this->create(),而执行$this->create()会出发规则检测后返回真假，将该结果用于if判断，如果结果为真则进行add添加，如果结果为假则返回false
		if ($this->create()) {
			$this->add();
			return true;
		}
		return false;
	}
	// 以下方法的作用为保存编辑信息，用$this->create()的结果来提交的内容是否合法如果合法，则保存修改信息(sava需要用where指定cid，如果没有用where指定，这需要添加一个隐藏域内容为cid)。
	public function editData(){
		if(!$this->create()) return false;
		$this->save();
		return true;
	}
	// 以下方法的作用为:通过getSon方法取得自身的子集cid后，加上自己的cid组成的数组cids，将该数组组合成字符串后作为筛选条件，返回在数据库中的筛选结果集合，给页面循环
	public function getNoMy($cid){
		$cids = $this->getSon($this->get(),$cid);
		$cids[] = $cid;
		$strCids = implode(",", $cids);
		$cate = $this->where("cid not in ($strCids)")->get();
		return $cate;
	}
	// 以下方法的作用为:通过递归得到传入的cid对应的子集的cid，且$cids不是设置为静态，是通过array_merge合并
	public function getSon($data,$cid){
		$cids = array();
		foreach ($data as $value) {
			if ($cid == $value['pid']) {
				$cids[] = $value['cid'];
				$cids = array_merge($cids,$this->getSon($data,$value['cid']));
			}
		}
		return $cids;
	}


}




 ?>